#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//int CompareInt(const void* p1, const void* p2)
//{
//	return *((int*)p1) - *((int*)p2);
//}
//int main()
//{
//	int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
//	qsort(arr, sizeof(arr) / sizeof(arr[0]), sizeof(int), CompareInt);
//	int i = 0;
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	for (i = 0;i < sz;i++)
//	{
//		printf("%d ", arr[i]);
//	}
//	printf("\n");
//	return 0;
//
//}
//#include<string.h>
//typedef struct Stu
//{
//	char name[20];
//	int age;
//}stu;
//int CompareStuName(const void* p1, const void* p2)
//{
//	return strcmp((char*)p1, (char*)p2);
//}
//int main()
//{
//	stu list[3] = { {"zhangsan",18},{"lisi",21},{"wangwu",19} };
//	qsort(list, sizeof(list) / sizeof(list[0]), sizeof(stu), CompareStuName);
//	int i = 0;
//	return 0;
//
//}
void swap(char* p1, char* p2, int sz)
{
	int i = 0;
	for (i = 0;i < sz;i++)
	{
		int tmp = p1[i];
		p1[i] = p2[i];
		p2[i] = tmp;
	}
}
void MyQsort(void *base,int num,int sz,int(*cmp)(const void*p1,const void*p2))
{
	int i = 0;
	int j = 0;
	for (i = 0;i < num - 1;i++)
	{
		for (j = 0;j < num - i - 1;j++)
		{
			if (cmp((char*)base + j * sz, (char*)base + (j + 1) * sz) > 0)
			{
				swap((char*)base + j * sz, (char*)base + (j + 1) * sz, sz);
			}
		}
	}
}
int MyCompareInt(const void* p1, const void* p2)
{
	return *((int*)p1) - *((int*)p2);
}
int main()
{
	int arr[] = { 1, 3, 5, 7, 9, 2, 4, 6, 8, 0 };
	int sz = sizeof(arr) / sizeof(arr[0]);
	MyQsort(arr, sz, sizeof(int), MyCompareInt);
	int i = 0;
	for (i = 0;i < sz;i++)
	{
		printf("%d ", arr[i]);
	}
	printf("\n");
	return 0;

}